希望不只學到程式語言,同時也有能力在面對困難時,還是會努力去解決問題的那份堅持。(圖片來源)
對於很多文組畢業轉職工程師的人來說,如果沒有額外去輔修,大學應該沒有接觸過這門科目。無論是透過坊間的各類工程師培訓營、資策會或是自學,大多都會以最短時間可以有實做能力為主,沒有太多機會有專門一堂計算機概論的理論課程。
當初在培訓營時老師有帶入一些基本的概念,像是進位制、stack & queue、資料儲存方式、array & linkedlist、各種排序方法及時間複雜度等等。
當時完全理工小白的我,不大懂學這些理論的意義在哪裏,反正我只要會實做,程式碼跑得起來不會crash,功能也都正常,就表示我成功了。
一直對於自己非本科系這件事情有一點遺憾,希望能藉由這30天逼迫自己吸收相關理論並記錄下來。
《這門科目在講什麼?》
計算機概論大致可以分成幾類:
(1)硬體: 范紐曼型架構(CPU, Memory, I/O)、四則運算(補數, 浮點數, 符號大小值, IEEE127)、資料傳遞(數碼, 文字碼, 檢查碼)、數位邏輯(布林函式, 卡諾圖, 萬用閘, 組合電路)
(2)OS: 概論(型態, 演進, I/O處理)、CPU(排班法則、死結、臨界區間)、Memory(記憶體管理, 虛擬記憶體)、I/O(RAID)
(3)程式: 系統程式(編譯過程)、應用程式
(4)可能還會有網路通訊協定等等
以上濃縮成一句話就是:你怎麼把你輸入的東西存到電腦裡和電腦是怎麼顯示資料給你看的各種衍生課題。
對於非本科想當工程師一定要先學會這門科目嗎?
非必要,但有會更好。
最近開始在學重訓,一開始甚麼都不會教練說怎麼做就照做,只要不要用錯力拉傷就好;比較熟悉以後開始研究鍛鍊肌力原理,其實是讓肌肉產生微小的撕裂傷,破壞肌肉,這會造成發炎,而身體會靠製造更多肌肉來修復;為了給他修復期所以不應該每天都做激烈的重量訓練。也因此得知為什麼教練建議我一周跟她約課2次就好。
寫程式就像這樣,一開始我們要以時間內完成專案需求為目標,以小白來說最快速上手的方式就是模仿,所以我自己一開始很多時間都是參考前輩或是網路上的範例來做。有幾次開發經驗後會開始去看source code的運作邏輯,如果能理解計概的相關理論,更能去理解別人會這樣做是為什麼,有什麼方式可以更好,或是當你遇到一個bug時能夠更快找出問題來源。簡單來說就是我覺得念這門科目或許可以培養解決問題的能力。
接下來文章會依照上面介紹的分類架構來進行
由於是將學習過程記錄下來,如果有任何錯誤歡迎糾正